package com.ftg.micsofteware.controller;

import com.alibaba.csp.sentinel.annotation.SentinelResource;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 发送报文
 * loadbanlance lb 轮询
 * -  有哪些算法 ?
 * -  权重  权重算法如何实现?
 * -  最小连接数
 * -  轮询
 * nacos : 服务发现  -
 * - 手工下线以后是否可用
 * - 保护阈值 ：
 *
 * @author 布衣
 */
@RestController
public class SendController {

    /**
     * fallback 代码发生异常时，进行的处理
     * blockHandler 代码发生sentinel异常时，进行的处理
     *
     * @return SentinelResource sentinel资源注解，表示把这个api当做一个资源，然后放到控制中心时行监控
     */
    @GetMapping("/send")
    @SentinelResource(value = "mySentinel", blockHandler = "q2", fallback = "q1")
    public String send() {
        return "send8000";
    }

    @GetMapping("/hello")
    public String hello() {
        return "hello";
    }


    public String q1(BlockException ex) {
        return "发生异常";
    }

    public String q2(BlockException ex) {
        return "发生降级、降级和熔断" + ex;
    }

}
